from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from datetime import datetime
from app.core.config import settings
from app.api.endpoints import auth, message, image, news, image_task, product  # 添加product导入
from app.core.database import engine
from app.models import user
from app.api.endpoints import ai_workflow, image_workflow
from app.services.ai.rate_limiter import get_global_limiter, close_global_limiter, APIType  # 修改：加入预热+关闭

# 创建FastAPI应用实例
app = FastAPI(
    title="FastAPI多功能管理系统",
    description="一个功能完整的FastAPI后端系统",
    version="1.0.0"
)

# 配置CORS
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # 在生产环境中应该设置具体的域名
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

# 注册路由
app.include_router(auth.router, prefix="/api/auth", tags=["认证"])
app.include_router(message.router, prefix="/api/messages", tags=["消息"])
app.include_router(image.router, prefix="/api/images", tags=["图片"])
app.include_router(news.router, prefix="/api/news", tags=["新闻"])
app.include_router(ai_workflow.router, prefix="/api/ai", tags=["AI工作流"])
app.include_router(image_task.router, prefix="/api/image-tasks", tags=["图片任务"])
app.include_router(image_workflow.router, prefix="/api", tags=["图片工作流关联"])
app.include_router(product.router, prefix="/api/products", tags=["产品"])  # 添加这行

# 根路径
@app.get("/", tags=["系统信息"], summary="系统欢迎页面", description="显示系统欢迎信息和基本状态")
def root():
    return {"message": "欢迎使用FastAPI多功能管理系统"}

# 健康检查
@app.get("/health", tags=["系统信息"], summary="系统健康检查", description="检查系统运行状态和服务可用性")
def health_check():
    return {"status": "系统运行正常"}

# 新增：应用启动时预热限流器连接池，避免首次请求开销
@app.on_event("startup")
async def startup_event():
    limiter = get_global_limiter()
    # 预创建并复用两个通道的会话与连接池
    await limiter.get_session(APIType.GENERAL)
    await limiter.get_session(APIType.UPLOAD)

# 新增：应用关闭时优雅关闭 Coze 限流器中的 HTTP 会话
@app.on_event("shutdown")
async def shutdown_event():
    await close_global_limiter()